簡單來說, vim 是一種純文字編輯器,是從 vi 發展出的增強版,而 vi 是從 ex 發展出的視覺化文字編輯器, ex 又是從 ed 發展出的增強版。 以上這些工具都是在 Unix / Unix-Like 作業系統上的純文字編輯器。
早期,當人們還在用電傳打字機作為電腦的終端機時,由於無法即時更新畫面,因此皆是使用如 ex / ed 的 line-oriented editor,一次編輯一行,並且只有在使用者下指令時才會將該行印出。
當人們陸續開始使用顯示器作為終端機時,由於畫面可以即時更新了,line-oriented editor 的使用體驗不在令人滿意, vi 也隨之誕生。 vi 延伸了 ex 的功能,但同時實現了視覺化編輯的功能,或稱為 screen-oriented editor。 vi 能夠在螢幕上呈現文本,並透過游標在文本中自由移動,選擇欲修改的位置。 vi 大幅提升了編輯文本的體驗,成為諸多 Unix / Unix-Like 發行版上預設的純文字編輯器。
最後, Vi IMproved (vim) 是 vi 的增強版,增加了更多強大的功能,例如 auto-completion 、 syntax highlight 等等利於程式開發的功能,還能夠撰寫 plugin 進一步擴充功能,至今仍是最多工程師使用的純文字編輯器之一。
.swp、 .swo、 .swn 的隱藏檔案,在 vim 意外中斷時,這些備份檔案可以用於還原尚未儲存的變更。
flag 檔案時,第一次會生成 .flag.swp 的備份檔案,若 .flag.swp 存在(例如已經有一次意外中斷,或者有另一外使用者已開啟此檔案),則會生成 .flag.swo,第三次則會產生 .flag.swn
vim -r <.檔名.要的備份檔> 的指令ls -al
cat <.檔名.目標備份檔>
# Create Folder
sudo mkdir /var/www/html/vim && cd /var/www/html/vim
# Take ownership
sudo chown -R "$(whoami)" .
# Edit File with VIM
vim index.php

# Save Empty file
:w
# Enter Insert Mode
i
# Type flag
FLAG{caec56b46ae54987465ee1231dfff}
# Enter Normal Mode
<ESC>
# Wait a minute (wait for vim write the modification into swap file)
# Suspend vim
<Ctrl>z
# Kill vim
kill -9 %
# 有時候可能因為版本、設定的原因,備份檔可能權限為600,也有可能是644
# 讓網頁可以讀取的權限,至少要讓 other 擁有 r 的權限
chmod o+r .index.php.swp

存取 .index.php.swp ,由於非純文字檔,瀏覽器一般會直接下載下來。
使用 vim -r 還原檔案

